using System;
using System.Collections.Generic;

namespace SLBehaviourSystem
{
    
    public class BehaviourRuntimeComponentType
    {

//Action
        public const string Animator="Animator";
        public const string CameraShake="CameraShake";
        public const string SwitchCameraPositionByBezier="SwitchCameraPositionByBezier";
        public const string SwitchCameraPosition="SwitchCameraPosition";
        public const string SwitchCameraPositionToModel="SwitchCameraPositionToModel";
        public const string Idle="Idle";
        public const string Log="Log";
        public const string CameraLookAt="CameraLookAt";
        public const string CameraLookAtModel="CameraLookAtModel";
        public const string LookAt="LookAt";
        public const string MoveByDirect="MoveByDirect";
        public const string MoveByPoints="MoveByPoints";
        public const string Move="Move";
        public const string MoveToPos="MoveToPos";
        public const string MoveToTarget="MoveToTarget";
        public const string PlaySound="PlaySound";
        public const string SkillAttack="SkillAttack";
        public const string SkillAttacked="SkillAttacked";
        public const string SkillEffect="SkillEffect";
        public const string SkillSelect="SkillSelect";
        public const string TreeReference="TreeReference";
        public const string Wait="Wait";

//Condition
        public const string AreaSearch="AreaSearch";
        public const string IsKeyDown="IsKeyDown";
        public const string State="State";

    }

    public partial class BehaviourRuntimeComponentConfig
    {
        public static Dictionary<string, Type> ActionComponentDict = new Dictionary<string, Type>()
        {
            {BehaviourRuntimeComponentType.Animator,typeof(AnimatorComponent) },

            {BehaviourRuntimeComponentType.Idle,typeof(IdleComponent) },
            {BehaviourRuntimeComponentType.Log,typeof(LogComponent) },
            {BehaviourRuntimeComponentType.CameraLookAt,typeof(CameraLookAtComponent) },
            {BehaviourRuntimeComponentType.CameraLookAtModel,typeof(CameraLookAtModelComponent) },
            {BehaviourRuntimeComponentType.LookAt,typeof(LookAtComponent) },
            {BehaviourRuntimeComponentType.MoveByDirect,typeof(MoveByDirectComponent) },
            {BehaviourRuntimeComponentType.MoveByPoints,typeof(MoveByPointsComponent) },
            {BehaviourRuntimeComponentType.Move,typeof(MoveComponent) },
            {BehaviourRuntimeComponentType.MoveToPos,typeof(MoveToPosComponent) },
            {BehaviourRuntimeComponentType.MoveToTarget,typeof(MoveToTargetComponent) },
            {BehaviourRuntimeComponentType.TreeReference,typeof(TreeReferenceComponent) },
            {BehaviourRuntimeComponentType.Wait,typeof(WaitComponent) },

        };

        public static Dictionary<string, Type> ConditionComponentDict = new Dictionary<string, Type>()
        {
            {BehaviourRuntimeComponentType.AreaSearch,typeof(AreaSearchComponent) },
            {BehaviourRuntimeComponentType.IsKeyDown,typeof(IsKeyDownComponent) },
            {BehaviourRuntimeComponentType.State,typeof(StateComponent) },

        };
    }
    
}

